package com.admin.dao;

import java.util.ArrayList;

import org.apache.ibatis.annotations.Param;

import com.admin.model.StudentWithChooseInfo;
import com.common.model.Project;
import com.common.model.Score;
import com.common.model.StudentUser;
import com.common.model.TeacherUser;
import com.common.model.TimePlan;

public interface AdminChooseDao {
	/**
	 * 获取某班级下没有选毕业设计的学生名单
	 * @param classId
	 * @param start
	 * @return
	 */
	public ArrayList<StudentWithChooseInfo> getUnchooseListByClassId(@Param("class_id")int classId,@Param("start")int start);
	/**
	 * 获取某班级下没有选毕业设计的学生人数
	 * @param classId
	 * @return
	 */
	public int getUnchooseCountByClassId(int classId);
	/**
	 * 查找某个学生可选的题目列表
	 * @param stuId
	 * @return
	 */
	public ArrayList<Project> getAvailableProjectOfStudent(int stuId);
	/**
	 * 根据学生查询选题数目
	 * @param stuId
	 * @return
	 */
	public int getPrjCountByStuId(int stuId);
	/**
	 * 查询所有未选题的学生名单
	 * @return
	 */
	public ArrayList<StudentUser>getUnchooseListByAll();
	/**
	 * 获取某学院下没有选题的学生
	 * @param clgId
	 * @return
	 */
	public ArrayList<StudentUser>getUnchooseListByCollege(int clgId);
	/**
	 * 手动选题
	 * @param prjId
	 * @param stuId
	 * @return
	 */
	public int setChooseManual(@Param("prj_id")int prjId,@Param("stu_id")int stuId);
	/**
	 * 删除某学生的意向选题数据
	 * @param stuId
	 * @return
	 */
	public int deleteIntentChooseOfStu(int stuId);
	/**
	 * 判断是否模式为按题目选
	 * @param clgId
	 * @return
	 */
	public boolean getIsChooseByPrj(int clgId);
	/**
	 * 获取选了某个教师的学生(按教师选) 
	 * @param teaId
	 * @return
	 */
	public ArrayList<StudentUser> getStuListOfChooseTea(int teaId);
	/**
	 * 获取题目还未选择完毕的教师 (按教师选) 
	 * @param clgId
	 * @return
	 */
	public ArrayList<TeacherUser> getUnFinishTeacher(@Param("clg_id")int clgId,@Param("start")int start);	
	/**
	 * 获取题目还未选择完毕的教师数目(按教师选) 
	 * @param clgId
	 * @return
	 */
	public int getUnFinishTeacherCount(int clgId);
	/**
	 * 获取某个教师下还可以使用的题目(按教师选) 
	 * @param teaId
	 * @return
	 */
	public ArrayList<Project> getAviablePrjOfTea(int teaId);
	/**
	 * 获取选取了某个题目的学生(按题目选) 
	 * @param prjId
	 * @return
	 */
	public ArrayList<StudentUser> getStuListOfChoosePrj(int prjId);
	/**
	 * 获取还没有学生选择的题目(按题目选) 
	 * @param clgId
	 * @return
	 */
	public ArrayList<Project> getUnchooseProject(@Param("clg_id")int clgId,@Param("start")int start);
	/**
	 * 获取还没有学生选择的题目数目(按题目选)
	 * @param clgId
	 * @return
	 */
	public int getUnchooseProjectCount(int clgId);
	/**
	 * 查询某学院的设置 
	 * @param clgId
	 * @return
	 */
	public TimePlan getChooseSetOfCollege(int clgId);
	/**
	 *  创建一个学院的选题设置
	 * @param plan
	 * @return
	 */
	public int insertTimePlan(TimePlan plan);
	/**
	 * 修改某学院的选题设置
	 * @param plan
	 * @return
	 */
	public int updateTimeplan(TimePlan plan);
	/**
	 * 查询指定学院下所有的成绩
	 * @param clgId
	 * @param start
	 * @return
	 */
	public ArrayList<Score>getScoreByCollege(@Param("clg_id")int clgId,@Param("start")int start);
	/**
	 * 查询指定学院下所有的成绩数量
	 * @param clgId
	 * @return
	 */
	public int getScoreCountByCollege(int clgId);
	/**
	 * 根据题目获取分数
	 * @param prjId
	 * @return
	 */
	public Score getScoreByPrjId(int prjId);
	/**
	 * 增加一个分数数据
	 * @param score
	 * @return
	 */
	public int insertScore(Score score);
	
	/**
	 * 查询指定学院下所有的成绩(不分页)
	 * @param clgId
	 * @return
	 */
	public ArrayList<Score>getScoreByCollegeNoPage(int clgId);
}
